package capaModelo;

import java.io.Serializable;
import java.util.AbstractMap;
import java.util.HashMap;

import main.Aplication;
import capaGrafica.Carrito_V;
import capaGrafica.Listado_V;
import capaGrafica.Login_V;
import capaGrafica.Usuario_V;
import capaPersistencia.ModuloCompra;
import capaPersistencia.ModuloProductos;
import capaPersistencia.ModuloUsuarios;
import data.Cesta;
import data.UsuarioVO;

public class Carrito_M implements Modelo {

	@Override
	public void pressed(int code, AbstractMap<String, Serializable> data) {
		HashMap<String,Serializable> datos = new HashMap<String,Serializable>();
		ModuloCompra miModuloCompra = new ModuloCompra();
		ModuloProductos miModuloProductos = new ModuloProductos();
		switch(code){
		
		case Carrito_V.BTN_DELETE:
			Aplication.cesta.delete((String) data.get("id"));
			Aplication.changeToWindow(new Carrito_V(), null);
			break;
			
		case Carrito_V.BTN_SPINER:
			
			Aplication.cesta.cambioCantidad((String)data.get("id"), (Integer)data.get("cantidad"));
			break;
			

			
		case(Carrito_V.MENU_USER):
			ModuloUsuarios miModelo = new ModuloUsuarios();
			UsuarioVO user = miModelo.obtenerUsuario(Aplication.logedUser);
			/* Rellenar datos a pasar */
			datos.put("user", user.getUser());
			datos.put("pass", user.getPass());
			datos.put("name", user.getNombre());
			datos.put("city", user.getCiudad());
			datos.put("fecha", user.getFechaNacimiento());
			datos.put("rol", user.getRol());
			datos.put("direccion", user.getDireccion());
			datos.put("email", user.getEmail());
			
			Aplication.changeToWindow(new Usuario_V(), datos);
			break;
			
		case Carrito_V.MENU_LOGOUT:
			Aplication.logedUser = null;
			Aplication.cesta = new Cesta();
			Aplication.changeToWindow(new Login_V(), null);

			break;
			
		case Carrito_V.BTN_COMPRA:
			boolean ok = miModuloCompra.addCompra(Aplication.cesta, Aplication.logedUser);
			Aplication.cesta = new Cesta();
			
			if(ok){
				Aplication.changeToWindow(new Carrito_V(), null);
				Aplication.actualWindow.change(Carrito_V.COMPRA_OK, null);
			}
			else Aplication.actualWindow.change(Carrito_V.COMPRA_ERROR, null);
			break;
			
		case Carrito_V.MENU_LISTADO:
			datos.put("productos", miModuloProductos.ordenarProductosNombre());
			Aplication.changeToWindow(new Listado_V(), datos);	
			break;
		}
		
		
	}

}
